/**
 * Nombre : ConsultaMasivaAction.java 
 * Versi�n : 1.2 
 * Creaci�n : 14/11/2008 
 * Autor : Orlando Pihue Montoya 
 * Usuario : P020912 
 * Finalidad : Consulta de Perfiles de Usuario
 * 
 * Modificacion: << fecha de modificaci�n>> 
 * Autor : <<quien actualizo el archivo>> 
 * Usuario : <<c�digo de usuario modificador>> 
 * Detalle : <<descripci�n de la modificaci�n>>
 */
package igrupobbva.pe.sistemareniec.actions;

import igrupobbva.pe.sistemareniec.forms.UsuarioForm;
import igrupobbva.pe.sistemareniec.util.ConstantesUtil;
import igrupobbva.pe.sistemareniec.util.FuncionesUtil;
import igrupobbva.pe.sistemareniec.util.LectorParametrosEntrada;
import igrupobbva.pe.sistemareniec.util.ParametroUtil;
import igrupobbva.pe.sistemareniec.util.ReniecLog;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.sql.Connection;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.upload.FormFile;

import com.grupobbva.iici.serializable.Corporativa;
import com.grupobbva.iici.serializable.ParametrosEntrada;
import com.grupobbva.iici.service.CorporativaService;
import com.grupobbva.iici.service.OficinaService;
import com.grupobbva.iici.util.SpringUtils;
import com.grupobbva.pe.SIR.ents.header.RequestHeader;
import com.grupobbva.pe.SIR.service.message.ConsultaPorDNIRequest;
import com.grupobbva.pe.SIR.service.message.ConsultaPorDNIResponse;
import com.grupobbva.pe.SIR.service.message.WS_PersonaReniec_ServiceLocator;
import com.ibm.www.operations.SubTramaRespuestaDatos2;
//import com.grupobbva.iici.util.ConstantesUtil;
//import com.ibm.www.BBVA_RENIEC_WSDLSOAP_HTTP_ServiceLocator;

public class ConsultaMasivaAction extends DispatchAction {
	static Logger logger = Logger.getLogger(ConsultaMasivaAction.class
			.getName());

	private List listaUsuarios;
	
	private CorporativaService corporativaService;
	
	private OficinaService oficinaService;

	private static final long MEGABYTE = 1024L * 1024L;
	private static final long KILOBYTE = 1024L;
	private String fileOuput = "";
	ReniecLog objLog = new ReniecLog();
	//IILDPeUsuario user = null;

	public ActionForward inicio(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value
		UsuarioForm usuarioForm = (UsuarioForm) form;
		corporativaService=SpringUtils.getBean(request, CorporativaService.class);
		oficinaService=SpringUtils.getBean(request, OficinaService.class);
		
		String flagWindow = "0";
		request.setAttribute("flagWindow", flagWindow);
		request.setAttribute("flag", "0");		
		try {
			request.getSession().setAttribute("codigoOficina", corporativaService.obtenerPorCodigo("T04", "001").getValor1());
			request.getSession().setAttribute("listaOficina", oficinaService.obtenerTodasOficinas());
		} catch (Exception e) {
			errors.add("name", new ActionError("id"));
			logger.error("[inicio]-Ha ocurrido un error: "+e);
		}
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
			forward = mapping.findForward("error");
		} else {
			forward = mapping.findForward("inicio");
		}	
		return (forward);

	}

	public ActionForward consulta(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//TODO consulta
		logger.info(" =================== consulta v5() =================");
		ActionErrors errors = new ActionErrors();
		HttpSession sesion = request.getSession();
		corporativaService=SpringUtils.getBean(request, CorporativaService.class);
		
		UsuarioForm usuarioForm = (UsuarioForm) form;
		FormFile fileInput = usuarioForm.getFileInput();
		String data = new String(fileInput.getFileData());
		String[] campos = data.split("\\n+");
		//Connection conexion = new Connection();
		if(campos!=null){
			logger.info("[consulta]-CantDNIs en archivo: "+campos.length);	
		}
		ParametrosEntrada input = LectorParametrosEntrada.parametrosConsultaMasiva(request);
		
		String flag = "1";
		String flagWindow = "1";
		usuarioForm.setFlag("1");
		String rootMasiva = (String) sesion.getAttribute("txt");
		//String rootInput = (String) sesion.getAttribute("input");
		String rootLog = (String) sesion.getAttribute("log");
		logger.info("[consulta]-rootMasiva: "+rootMasiva);
		logger.info("[consulta]-rootLog: "+rootLog);
		
		//[MGLHPM] Inicio
		
		ParametroUtil parametroUtil = ParametroUtil.getInstance();
		
		RequestHeader cabecera2 = (RequestHeader) sesion.getAttribute("cabecera2");
		
		//Calendar fechaActual = GregorianCalendar.getInstance();
		Date fechaActual = new Date();
		//AAAA-MM-DD-HH.mm.SS.ssssss
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
		
		WS_PersonaReniec_ServiceLocator proxy = new  WS_PersonaReniec_ServiceLocator();
		proxy.setWS_PersonaReniecEndpointAddress(parametroUtil.getValue("ws.url.reniec"));
		logger.info("[consulta]-endPoint-WSReniec: "+proxy.getWS_PersonaReniecAddress());
		
		//ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value

		ArrayList listaTitulo = new ArrayList();
		
		SubTramaRespuestaDatos2 subTramaRespuesta = new SubTramaRespuestaDatos2();
		
		//boolean flag = false;
		
		String dnis = "";
		String linea = "";
		String salida = "";
		String cuerpo = "";

		int result = 0;
		String unidad = "Bytes";
		String archivo = "";
		File ficheroNew = null;
		ArrayList collecConsultas = new ArrayList();
		ArrayList collecError = new ArrayList();
		
		try
		{
			//Se escribe el log de la consulta en un archivo (fecha_ReniecLog.txt)
			objLog.writeLog(" ======== ["
							+ input.getRegistro()+ "] [" + input.getCodOficina()
							+ "] = Tipo Consulta (MASIVA) ==========================",
					rootLog);
			
			cabecera2.setCodigoInterfaz(parametroUtil.getValue("codigoInterfazDNI"));
			cabecera2.setFechaHoraEnvio(df.format(fechaActual));
			cabecera2.setIdTransaccion(cabecera2.getFechaHoraEnvio()+cabecera2.getCodigoAplicacion()+cabecera2.getUsuario().trim());
			
			com.grupobbva.pe.SIR.ents.body.consultaPorDNI.ConsultaPorDNIRequest body = new com.grupobbva.pe.SIR.ents.body.consultaPorDNI.ConsultaPorDNIRequest();
			//body.setCentroCostos("Centro Costo");
			//body.setHostSolicitante("Host");
			//body.setNumeroDNISolicitante("58745697");
			
			
			body.setTipoAplicacion(parametroUtil.getValue("tipoAplicacion"));
			body.setRegistroCodUsuario(cabecera2.getUsuario().trim());
			body.setNumeroDNIConsultado(input.getDni());
			body.setIndConsultaDatos("S");
			body.setIndConsultaFirma("N");
			body.setIndConsultaFoto("N");
			body.setFormatoFirma(parametroUtil.getValue("formatoFirma"));		
			
			ConsultaPorDNIRequest consulta = new ConsultaPorDNIRequest(cabecera2, body);
			
			ConsultaPorDNIResponse rpta = null;
			
			List<Corporativa> lstEstado=corporativaService.getEstado();
			
			
			for (int i = 0; i < campos.length; i++) {
				logger.info("-------------- "+i+" --------------");
				UsuarioForm resulError = new UsuarioForm();
				UsuarioForm resulBean = new UsuarioForm();
				if (campos[i].trim().length()==8) {
					input.setDni(campos[i].trim());
					body.setNumeroDNIConsultado(input.getDni());
					//Se habilita el fix para idTransaccion
					cabecera2.setFechaHoraEnvio(df.format(new Date()));
					cabecera2.setIdTransaccion(cabecera2.getFechaHoraEnvio()+cabecera2.getCodigoAplicacion()+cabecera2.getUsuario().trim());
					
					consulta = new ConsultaPorDNIRequest(cabecera2, body);
					logger.info("[input]-idTransaccion: "+cabecera2.getIdTransaccion());
					logger.info("[input]-DNI Consultado: "+body.getNumeroDNIConsultado());
					rpta = proxy.getWS_PersonaReniec().consultaPorDNI(consulta);
					if(rpta!=null){
						logger.info("\t[MASIVA]-WS-codRespuesta: "+rpta.getRefResponseHeader().getCodigoRespuesta());
						logger.info("\t[MASIVA]-WS-rptaMensaje :" + rpta.getRefResponseHeader().getMensajeRespuesta());
						logger.info("\t[MASIVA]-WS-rptaIdTransaccion: " + rpta.getRefResponseHeader().getIdTransaccion());
					}
					//Verificacion de respuesta
					if("0000".equals(rpta.getRefResponseHeader().getCodigoRespuesta()))
					{
						logger.info("\t[MASIVA]-0000 -> Seteando RptaConsulta.");
						//[14-04-2014] Se agrega validaci�n StringUtils.trimToEmpty para manejar los nulos
						resulBean.setRptaConsulta(ConstantesUtil
								.completarSpace(StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDNI().getNumDNIConsultado()), 8)
								+ ConstantesUtil.completarSpace("", 6)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoPaterno()), 40)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoMaterno()), 40)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombres()), 35)
								+ ConstantesUtil
										.completarSpace(ConstantesUtil
												.intToString(
														rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getFecha()
														), 10)
								+ ConstantesUtil.completarSpace("", 30)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombrePadre()), 
										15)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombreMadre()), 
										15)
								+ ConstantesUtil.completarSpace(ConstantesUtil
										.estatura(
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getEstatura()
												), 4)
								+ ConstantesUtil.completarSpace(ConstantesUtil
										.sexo(
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getSexo()
												), 12)
								+ ConstantesUtil.completarSpace(ConstantesUtil
										.estadoCivil(
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodigoEstadoCivil()
												),
										12)
								+ ConstantesUtil.completarSpace(ConstantesUtil
										.gradoInst(
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodGradoInstruccion()
												), 12)
								+ ConstantesUtil
										.completarSpace(getEstado(
												//objRpta.getRestricciones()
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getCodigoRestriccion()
												,false,lstEstado),
												12)
								+ ConstantesUtil.completarSpace(ConstantesUtil
										.votacion(
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getConstanciaVotacion()
												),
										12)
								+ ConstantesUtil.completarSpace(
											FuncionesUtil.convertDateReniecToString(
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaExpedicion()
												)
												, 10)
								+ ConstantesUtil.completarSpace("", 10)
								+ ConstantesUtil.completarSpace(
										FuncionesUtil.convertDateReniecToString(
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaInscripcion()
												)
												, 10)
								+ ConstantesUtil.completarSpace(ConstantesUtil
										.anioEstudiosAM(
												//objRpta.getAnioEstudio()//FIXME MGLHPM
												StringUtils.EMPTY
												), 10)
								+ ConstantesUtil.completarSpace(
										ConstantesUtil.docSustentatorio(
												rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodTipoDocSustentario()
												), 10)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getProvincia()), 30)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getDistrito()), 45)
								+ ConstantesUtil.completarSpace("", 30)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getProvincia()), 30)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDistrito()), 60)
								+ ConstantesUtil.completarSpace(
										StringUtils.trimToEmpty(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDireccion()), 60)
						);
						
						dnis = dnis + rpta.getRefConsultaPorDNIResponse().getRespuestaDNI().getNumDNIConsultado() + "-";
						logger.info("\tdnis => "+dnis);
						collecConsultas.add(resulBean);
					}else{
						logger.info("->No hay respuesta exitosa para DNI: "+body.getNumeroDNIConsultado()+
								"\t codRpta: "+rpta.getRefResponseHeader().getCodigoRespuesta() + 
								"-"+rpta.getRefResponseHeader().getMensajeRespuesta());
						
						resulError.setEstado(campos[i].trim());	
						collecError.add(resulError);
						dnis = dnis + campos[i] + "-";
						
						/*String descMensj="";						
						if(rpta.getRefResponseHeader().getMensajeRespuesta().length()>=6){
							descMensj = ConstantesUtil.reemplazaTildes(rpta.getRefResponseHeader().getMensajeRespuesta().substring(6));
						}*/
						//20140514 DC: Se setea por defaul el mensaje
						resulBean.setRptaConsulta
						(ConstantesUtil.completarSpace(campos[i].trim(), 14)+ Messages.getString("5200"));
						//(ConstantesUtil.completarSpace(campos[i].trim(), 14)+ descMensj);
						//Messages.getString(rpta.getRefResponseHeader().getCodigoRespuesta()));	
						collecConsultas.add(resulBean);
					}

				}else{
					logger.info("El dni ingresado no es de 8 digitos.");
					if (campos[i].trim().length()>0){
						String dnisE="";
							if(campos[i].trim().length()<14) dnisE=ConstantesUtil.completarSpace(campos[i].trim(), 14);
								else dnisE=ConstantesUtil.completarSpace(campos[i].trim().substring(0,13), 14);
						resulBean.setRptaConsulta(dnisE					
								+ ConstantesUtil.completarSpace("DNI ERRONEO", 40));
						collecConsultas.add(resulBean);
						resulError.setEstado(campos[i].trim());
						collecError.add(resulError);
					
					}
				}		
				
			}
			logger.info("Se termina de consultar al WS de RENIEC, ahora se genera el archivo .txt");
			
			objLog.writeLog("[DNI's Consultados]: " + dnis, rootLog);
			if(dnis.length()>0)
			{
				logger.info("[consulta]-Se generara el archivo txt de los dnis obtenidos  ("+dnis+") ");
				this.fileOuput = nameFileOuput(rootMasiva, input.getRegistro());
				logger.info("[consulta]-fileOuput: "+this.fileOuput);
				
				ficheroNew = new File(fileOuput);
				FileWriter fichero = new FileWriter(this.fileOuput);
				PrintWriter pw = new PrintWriter(fichero);
				for (int i = 0; i < collecConsultas.size(); i++) {
					UsuarioForm objBean = (UsuarioForm) collecConsultas.get(i);
					pw.println(objBean.getRptaConsulta());
					
				}
				pw.close();
	
				result = (int) ficheroNew.length();
				if (ficheroNew.length() > KILOBYTE
						&& ficheroNew.length() < MEGABYTE) {
					result = (int) (ficheroNew.length() / KILOBYTE);
					unidad = "KB";
				}
				if (ficheroNew.length() > MEGABYTE) {
					result = (int) (ficheroNew.length() / MEGABYTE);
					unidad = "MB";
				}
				archivo = result + unidad;
			}
			else flag = "0";
			
		}
		catch(Exception e){
			logger.error("[ERROR_MASIVA]-Ha ocurrido una excepcion: ",e);
			/*errors.add("name", new ActionError("id"));
			  objLog.writeLog("[" + input.getRegistro() + "] [" + e.getMessage()
			  + "] = ERROR", rootLog);*/
		}
		finally
		{
			cabecera2.setCodigoInterfaz(null);
			cabecera2.setFechaHoraEnvio(null);
			cabecera2.setIdTransaccion(null);
		}
		
		if (!errors.isEmpty()) {
			flag = "0";
			saveErrors(request, errors);
			forward = mapping.findForward("inicio");
		} else {
			
			forward = mapping.findForward("inicio");
		}	
		//ystem.out.println("ERORRRRRR:: "+collecError.size());
		logger.info("[consulta]-flag: "+flag);
		request.setAttribute("flag", flag);
		request.setAttribute("collecError", collecError);
		request.setAttribute("TotalError", String.valueOf(collecError.size()));
		request.setAttribute("flagWindow", flagWindow);
		request.setAttribute("ruta", this.fileOuput);
		request.setAttribute("descripcion", "  Size:(" + archivo + ")");
		
		logger.info(" == [consulta]-saliendo .. ===");
		// [MGLHPM] Fin
				
//		Cabecera cabecera = (Cabecera) sesion.getAttribute("cabecera");
//		cabecera.setTipoConsulta("7");
//		ActionForward forward = new ActionForward(); // return value
//
//		String dnis = "";
//		String linea = "";
//		String salida = "";
//		String cuerpo = "";
//
//		int result = 0;
//		String unidad = "Bytes";
//		String archivo = "";
//		File ficheroNew = null;
//		ArrayList collecConsultas = new ArrayList();
//		ArrayList collecError = new ArrayList();
//		try {
//			SubTramaConsulta7 subTramaConsulta = new SubTramaConsulta7();
//			SubTramaRespuesta7 objRpta = new SubTramaRespuesta7();
//			RENIEC_7_REQUEST_Type objSend = new RENIEC_7_REQUEST_Type();
//			
//			BBVA_RENIEC_INTERFACE_ServiceLocator objLocator = new BBVA_RENIEC_INTERFACE_ServiceLocator();
//			objLog
//					.writeLog(
//							"["
//									+ input.getRegistro()
//									+ "] ["
//									+ input.getCodOficina()
//									+ "] = Tipo Consulta (MASIVA) ==============================================",
//							rootLog);
//
//			for (int i = 0; i < campos.length; i++) {
//				UsuarioForm resulError = new UsuarioForm();
//				UsuarioForm resulBean = new UsuarioForm();
//				if (campos[i].trim().length()==8) {
//					input.setDni(campos[i].trim());
//					
//					subTramaConsulta.setNumDNI(input.getDni());
//					subTramaConsulta.setCaracVerificacion(" ");
//					subTramaConsulta.setTipoDocumento(" ");
//					subTramaConsulta.setReservado("     ");
//					
//					Control control = new Control();
//					control.setCodigoOficina(input.getCodOficina());
//					control.setNombreOficina(input.getNomOficina());
//					control.setRegistro(input.getRegistro());
//					control.setNombreCompleto(input.getNomGestor());
//					control.setFechaConsulta(input.getFechaString());
//					control.setTipoConsulta(input.getTipoConsulta());
//					control.setCanal(input.getCanal());
//					objSend.setControl(control);
//					
//					objSend.setCabecera(cabecera);
//					objSend.setSubTramaConsulta(subTramaConsulta);
//
//					try {
//						objRpta = objLocator.getSOAP_HTTP_Port().operation7(
//								objSend).getSubTramaRespuesta();
//						
//						System.out.println("Codigo de Error: "+objRpta.getCodError()+" - "+Messages.getString(objRpta.getCodError()));
//						System.out.println("Codigo de Restriccion: "+objRpta.getCodError()+" - "+objRpta.getRestricciones());
//						if (objRpta.getCodError().equals("0000")) {
//						resulBean.setRptaConsulta(ConstantesUtil
//								.completarSpace(objRpta.getNumDNI(), 8)
//								+ ConstantesUtil.completarSpace("", 6)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getApellidoPat(), 40)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getApellidoMat(), 40)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getNombres(), 35)
//								+ ConstantesUtil
//										.completarSpace(ConstantesUtil
//												.intToString(objRpta
//														.getFechaNac()), 10)
//								+ ConstantesUtil.completarSpace("", 30)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getNombrePadre(), 15)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getNombreMadre(), 15)
//								+ ConstantesUtil.completarSpace(ConstantesUtil
//										.estatura(objRpta.getEstatura()), 4)
//								+ ConstantesUtil.completarSpace(ConstantesUtil
//										.sexo(objRpta.getSexo()), 12)
//								+ ConstantesUtil.completarSpace(ConstantesUtil
//										.estadoCivil(objRpta.getEstadoCivil()),
//										12)
//								+ ConstantesUtil.completarSpace(ConstantesUtil
//										.gradoInst(objRpta
//												.getGradoInstruccion()), 12)
//								+ ConstantesUtil
//										.completarSpace(getEstado(objRpta.getRestricciones(),false),
//												12)
//								+ ConstantesUtil.completarSpace(ConstantesUtil
//										.votacion(objRpta.getConstVotacion()),
//										12)
//								+ ConstantesUtil.completarSpace(ConstantesUtil
//										.intToString(objRpta
//												.getFechaExpedicion()), 10)
//								+ ConstantesUtil.completarSpace("", 10)
//								+ ConstantesUtil.completarSpace(ConstantesUtil
//										.intToString(objRpta
//												.getFechaInscripcion()), 10)
//								+ ConstantesUtil.completarSpace(ConstantesUtil
//										.anioEstudiosAM(objRpta
//												.getAnioEstudio()), 10)
//								+ ConstantesUtil.completarSpace(
//										ConstantesUtil.docSustentatorio(objRpta
//												.getDocSust()), 10)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getProvNac(), 30)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getDistNac(), 45)
//								+ ConstantesUtil.completarSpace("", 30)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getProvinciaDom(), 30)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getDistritoDom(), 60)
//								+ ConstantesUtil.completarSpace(objRpta
//										.getDireccion(), 60)
//						);
//						dnis = dnis + objRpta.getNumDNI() + "-";
//						collecConsultas.add(resulBean);
////						ubicacion a probar de registro de log-por descriminacion resultados correctos
//						
//						/*
//						Log beanLog = new Log();
//						beanLog.setStr_num_oficina(grabaCodigo);
//						beanLog.setStr_des_oficina(grabaNombre);
//						beanLog.setStr_num_registro(registro);
//						beanLog.setStr_nom_completo(nomCompleto);
//						beanLog.setStr_fec_consulta( FuncionesUtil.printDateOperation("dd/MM/yyyy HH:mm:ss"));
//						beanLog.setStr_tipo("MASIVA");
//						conexion.registraLog(beanLog);
//						*/
//						
//						}
//						else
//						{
//						resulError.setEstado(campos[i].trim());	
//						collecError.add(resulError);
//						dnis = dnis + campos[i] + "-";
//						resulBean.setRptaConsulta(ConstantesUtil
//								.completarSpace(campos[i].trim(), 14)+ Messages.getString(objRpta.getCodError()));
//						collecConsultas.add(resulBean);
//						}					
//						
//					} catch (Exception e) {
//						resulError.setEstado(campos[i].trim());						
//						resulBean.setRptaConsulta(ConstantesUtil
//						.completarSpace(campos[i].trim(), 14)					
//						+ ConstantesUtil.completarSpace("DNI ERRONEO", 40));
//						collecConsultas.add(resulBean);
//						System.out.println("ERROR:: "+campos[i].trim());
//						e.printStackTrace();
//						}
//
//				}else{
//					if (campos[i].trim().length()>0){
//						String dnisE="";
//							if(campos[i].trim().length()<14) dnisE=ConstantesUtil.completarSpace(campos[i].trim(), 14);
//								else dnisE=ConstantesUtil.completarSpace(campos[i].trim().substring(0,13), 14);
//						resulBean.setRptaConsulta(dnisE					
//								+ ConstantesUtil.completarSpace("DNI ERRONEO", 40));
//						collecConsultas.add(resulBean);
//						resulError.setEstado(campos[i].trim());
//						collecError.add(resulError);
//					
//					}
//					}		
//			}			
//			objLog.writeLog("[DNI's Consultados]: " + dnis, rootLog);
//			if(dnis.length()>0)
//			{
//				this.fileOuput = nameFileOuput(rootMasiva, input.getRegistro());
//				ficheroNew = new File(fileOuput);
//	
//				FileWriter fichero = new FileWriter(this.fileOuput);
//				PrintWriter pw = new PrintWriter(fichero);
//				for (int i = 0; i < collecConsultas.size(); i++) {
//					UsuarioForm objBean = (UsuarioForm) collecConsultas.get(i);
//					pw.println(objBean.getRptaConsulta());
//					
//				}
//				pw.close();
//	
//				result = (int) ficheroNew.length();
//				if (ficheroNew.length() > KILOBYTE
//						&& ficheroNew.length() < MEGABYTE) {
//					result = (int) (ficheroNew.length() / KILOBYTE);
//					unidad = "KB";
//				}
//				if (ficheroNew.length() > MEGABYTE) {
//					result = (int) (ficheroNew.length() / MEGABYTE);
//					unidad = "MB";
//				}
//				archivo = result + unidad;
//			}
//			else flag = "0";
//		
//
//
//		} catch (Exception e) {
//			errors.add("name", new ActionError("id"));
//			objLog.writeLog("[" + input.getRegistro() + "] [" + e.getMessage()
//					+ "] = ERROR", rootLog);
//		}
//
//		if (!errors.isEmpty()) {
//			flag = "0";
//			saveErrors(request, errors);
//			forward = mapping.findForward("inicio");
//		} else {
//			
//			forward = mapping.findForward("inicio");
//		}	
//		System.out.println("ERORRRRRR:: "+collecError.size());
//		request.setAttribute("flag", flag);
//		request.setAttribute("collecError", collecError);
//		request.setAttribute("TotalError", String.valueOf(collecError.size()));
//		request.setAttribute("flagWindow", flagWindow);
//		request.setAttribute("ruta", this.fileOuput);
//		request.setAttribute("descripcion", "  Size:(" + archivo + ")");

		return (forward);

	}

	public ActionForward downloadFile(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		logger.info("== descargando Archivo ==");
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value
		request.setAttribute("file", "ResultadoDNI.txt");
		request.setAttribute("rootpath", this.fileOuput);
		

		try {

		} catch (Exception e) {
			errors.add("name", new ActionError("id"));
			logger.error("Ha ocurrido un error en downloadFile:  ",e); 
		}
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
			forward = mapping.findForward("error");
		} else {
			forward = mapping.findForward("descarga");
		}	
		return (forward);

	}

	public static String nameFileOuput(String rootpath, String codigoUser) {
		Date fecha = new Date();
		java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(
				"dd-MM-yyyy_hhmmss");
		String result = rootpath + codigoUser + "_" + format.format(fecha)
				+ ".txt";		
		return result;
	}
	
	public String getEstado(String estado, boolean flag,List<Corporativa> lstCorporativa){
		estado = StringUtils.trimToEmpty(estado);
	  	System.out.println("Muestrame valor de estado filtro : " +  estado);
	 	String est="";
	 	try{	 		
	 	
	 		if(lstCorporativa != null && lstCorporativa.size() > 0){
	 			for(int i=0; i<lstCorporativa.size(); i++){
	 				Corporativa corporativa = new Corporativa();
	 				corporativa = (Corporativa)lstCorporativa.get(i);
	 				System.out.println("tmaño de lista 1 :"  + lstCorporativa.size());
	 				if(corporativa.getValor1() == null){
	 					est = corporativa.getValor2();
	 				}else if(corporativa.getValor1().equals(estado)){
	 					est = corporativa.getValor2();
	 				}
	 				System.out.println("tmaño de lista :"  + lstCorporativa.size());
	 				System.out.println("muestrame el valor de estado : "  + corporativa.getValor1());
	 	 			System.out.println("muestrame el valor de descripcion : "  + corporativa.getValor2());
	 			}
	 		 	
	 		
	 		}else{
	 			est="";
	 		}
	 		 
	 		if(!flag)if(est.length()>11) est=est.substring(0,12);
	 	
	 	
	 	}catch(Exception e){
	 		est="";
	 	}
	 	/**Truncar 12 tama�o*/
	 	
	 	 return est;
	}

}
